package cn.wolfcode.restful.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    //params属性:请求路径中必须带有指定属性名name，否则无法访问到映射方法
    @RequestMapping(value = "/test",method = RequestMethod.GET,params = "name")
    public String test(){
        return "请求中必须带有名为name的参数";
    }

    //params属性:请求路径中必须带有指定属性名name,并且值=xiaofang，否则无法访问到映射方法
    @RequestMapping(value = "/test1",method = RequestMethod.GET,params = "name=xiaofang")
    public String test1(){
        return "请求中必须带有名为name的参数，并且值等xiaofang";
    }


    //headers属性：要求客户端设置请求头的类型
    //accept:表示客户端希望服务器返回什么类型给我
    // accept=application/json
    @RequestMapping(value = "/test2",method = RequestMethod.GET,produces = "application/json")
    public String test2(){
        return "ok-json";
    }

    //headers属性：要求客户端设置请求头的类型
    //accept:表示客户端希望服务器返回什么类型给我
    // accept=application/xml
    @RequestMapping(value = "/test3",method = RequestMethod.GET,produces = "application/xml")
    public String test3(){
        return "ok-xml";
    }

    /**小结：在@RequestMaping中，路径，请求方法，以及属性都属于一种判断映射方法访问是否冲突的依据
     *headers属性的作用: 要求客户端必须设置accept请求头，否则无法访问
     * 一般用于：例如开发的项目使用的技术不一样时，例如C++，C#
     * 针对不同的技术返回不同的格式即可
     * 例如C++，那么在该映射方法中，设置headers属性
     * 返回的格式为xml，这样即可解决针对不同技术，返回不同的数据格式
     */


    //headers属性：要求客户端设置请求头的类型
    //content-Type:表示客户端带过来的参数必须为设置的类型 json
    // content-Type=application/json
    @RequestMapping(value = "/test4",method = RequestMethod.GET,consumes = "application/json")
    public String test4(){
        return "ok-content-Type/json";
    }

    //headers属性：要求客户端设置请求头的类型
    //content-Type:表示客户端带过来的参数必须为设置的类型 xml
    // content-Type=application/xml
    @RequestMapping(value = "/test5",method = RequestMethod.GET,consumes = "application/xml")
    public String test5(){
        return "ok-content-Type/xml";
    }




}
